package com.yeti.repository;

import java.io.Serializable;
import java.util.ArrayList;

import com.yeti.domain.Cliente;

public interface ClienteDAO extends Serializable{
	
	/**
	 * Metodo que actualiza la informacion de un cliente de la base de datos.
	 * 
	 * @param c: Es el cliente a actualizar.
	 * @return devuelve true si la operacion se produce correctamente o false en caso contrario.
	 */
    public boolean updateCliente(Cliente c);
    
    /**
	 * Metodo que agrega un cliente en la base de datos.
	 * 
	 * @param c: Es el cliente a agregar.
	 * @return devuelve true si la operacion se produce correctamente o false en caso contrario.
	 */
    public boolean addCliente(Cliente c);
    
    /**
	 * Metodo que elimina a un cliente de la base de datos.
	 * 
	 * @param c: Es el cliente a eliminar.
	 * @return devuelve true si la operacion se produce correctamente o false en caso contrario.
	 */
    public boolean remCliente(Cliente c);
	
    /**
	 * Metodo que busca a un cliente por su id en la base de datos.
	 * 
	 * @param id: Es el id de usuario por el que se buscara al cliente.
	 * @return devuelve al cliente si lo encuentra o null en caso contrario.
	 */
	public Cliente getCliente(int id);
    
	/**
	 * Metodo que busca a un cliente por su nombre de usuario en la base de datos.
	 * 
	 * @param username: Es el nombre de usuario por el que se buscara al cliente.
	 * @return devuelve al cliente si lo encuentra o null en caso contrario.
	 */
	public Cliente getCliente(String username);

	/**
	 * Metodo que obtiene todos los clientes del sistema.
	 * 
	 * @return devuelve los clientes si la operacion se produce correctamente o null en caso contrario.
	 */
	public ArrayList<Cliente> getClientes();
}
